OmniのWorkbook上で選択したフィールドに基づいた集計結果をdbtのModelとしてプッシュしてみた
さがらです。
OmniのWorkbook上で選択したフィールドに基づいた集計結果をdbtのModelとしてプッシュしてみたので、その内容を本記事でまとめてみます。
※Omni自体については、下記のブログが参考になると思います。
試す内容
下記のドキュメントに沿って、OmniのWorkbook上で定義した集計結果をdbtのModelとしてプッシュしてみます。
事前準備:Connectionのdbt連携設定
まず、事前準備として対象のConnectionでdbt連携設定をする必要があります。
こちらのブログの「Connectionのdbt連携設定」で手順をまとめていますので、こちらをご覧ください。
Workbook上で定義した集計結果をdbtのModelとしてプッシュ
では、本題であるWorkbook上で定義した集計結果をdbtのModelとしてプッシュしてみます。
下図のように、Orders
とOrder Items
という2つのviewを用いて、アイテムごとの単価や売上合計をまとめた集計結果をWorkbook上で定義してみました。また、Order Total Sum Without Tax
は下図のように2つのmeasureの差分を定義したフィールドとなっています。
この状態で、上部のModel
→Push to dbt
を押します。
すると、下図のように表示されます。SQLはちゃんとref
を使っているのがいいですね!
各項目編集したうえで、Push
を押します。特にdbt file name
はサブフォルダを指定したいことが多いと思うので忘れずに変更しましょう。(サブフォルダは新規作成するフォルダでも問題ありません、自動で作成されます。)
すると、Omniの画面の右下にこのようなポップアップが表示されるため、View changes here
を押してみます。
プルリクエストの発行画面となるため、プルリクエストを発行してマージします。
マージ後、dbt Cloudで確認してみると、下図のようにModelが追加されていました!
気になった点
先ほど検証した内容とは別に、Omniのスプレッドシートのような操作感を活かして、Order Total Sum Without Tax
という2つの列の値の差を算出したカラムを追加してみました。
この状態でPush to dbt
を押すと、何度操作を行っても下図のような画面が表示されてしまいました。そのため、スプレッドシートのような操作でロジックを実装した場合はまだすべての処理をdbt化することはできないのだと思います。これはぜひ改善してほしい…!
最後に
OmniのWorkbook上で選択したフィールドに基づいた集計結果をdbtのModelとしてプッシュしてみました。
検証した結果、現状はスプレッドシート的な操作を行った場合は制限がありそうですが、従来からあるBIツールの操作感でdbtのModelの開発が出来るのはとても便利じゃないでしょうか!